package com.scala.business

import org.apache.spark.sql.{Dataset, Row, SparkSession}

/**
 * 4、观测窗口内飞行次数最多的男性和女性会员（组内topN问题）
 * 这个指标可以帮助我们了解不同性别中谁是最活跃的乘客。
 * */
object Take04 {
  def main(args: Array[String]): Unit = {
    //创建SparkSession对象
    val ss: SparkSession = SparkSession.builder.appName("观测窗口内飞行次数最多的男性和女性会员").master("local").getOrCreate
    // 调用spark Session的对象得到一个DataFrameReader对象
    val df: Dataset[Row] = ss.read.json("hdfs://master:9000/air_data/*")

    // 注册为临时表// 注册为临时表
    df.createOrReplaceTempView("air_data")

    ss.sql("select memberNo,gender,age,flightCount" + ",dense_rank() over(partition by gender order by flightCount desc) as rank from air_data")
      .where("gender is not null AND gender != ''")
      .where("rank <= 5")
      .show(false)
  }
}
